<link rel="stylesheet" href="/static/admin/js/webuploader/webuploader.css" type="text/css">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">图片上传</h4>
        </div>
        <div class="modal-body" style="min-height: 200px">
            <div style="text-align: center;">
                <div>
                    文件上传成功后会自动刷新页面
                </div>
                <div id="fileList_pic" class="uploader-list pull-left"
                     style="width: auto">
                </div>
                <span id="filePicker" class="pull-left">选择图片</span>
            </div>
        </div>
    </div>
</div>

<script src="/static/admin/js/webuploader/webuploader.js" type="text/javascript"></script>
<script type="text/javascript">
  //上传图片
  (function images_list(i) {
    var $list = $('#fileList_pic');
    // 优化retina, 在retina下这个值是2
    var ratio = window.devicePixelRatio || 1;
    // 缩略图大小
    var thumbnailWidth = 100 * ratio;
    var thumbnailHeight = 100 * ratio;
    // 初始化Web Uploader
    var uploader = WebUploader.create({
      // 选完文件后，是否自动上传。
      auto: true,
      // swf文件路径
      swf: '/static/admin/js/webuploader/Uploader.swf',
      // 文件接收服务端。
      server: '/ext/attachment/adminfile/uploadpic',
      // 选择文件的按钮。可选。
      // 内部根据当前运行是创建，可能是input元素，也可能是flash.
      pick: {
        id: '#filePicker',
        multiple: false
      },
      // 只允许选择图片文件。
      accept: {
        title: 'Images',
        extensions: 'jpg,jpeg,bmp,png',
        mimeTypes: 'image/*'
      }
    });
    // 当有文件添加进来的时候
    uploader.on('fileQueued', function (file) {
      var $li = $(
        '<div id="' + file.id + '" class="file-item thumbnail">' +
        '<img>' +
        '<div class="info">' + file.name + '</div>' +
        '</div>'
        ),
        $img = $li.find('img');

      $list.html($li);
      // 创建缩略图
      uploader.makeThumb(file, function (error, src) {
        if (error) {
          $img.replaceWith('<span>不能预览</span>');
          return;
        }
        $img.attr('src', src);
      }, thumbnailWidth, thumbnailHeight);
      $('#filePicker').hide();
    });
    // 文件上传过程中创建进度条实时显示。
    uploader.on('uploadProgress', function (file, percentage) {
      var $li = $('#' + file.id),
        $percent = $li.find('.progress span');
      // 避免重复创建
      if (!$percent.length) {
        $percent = $('<p class="progress"><span></span></p>')
          .appendTo($li)
          .find('span');
      }
      $percent.css('width', percentage * 100 + '%');
    });
    // 文件上传成功，给item添加成功class, 用样式标记上传成功。
    uploader.on('uploadSuccess', function (file, res) {
      $('#' + file.id).addClass('upload-state-done');
      toastr.success('上传成功,页面即将刷新');
      setTimeout('location.reload();', 2000);
    });
    // 文件上传失败，现实上传出错。
    uploader.on('uploadError', function (file) {
      var $li = $('#' + file.id),
        $error = $li.find('div.error');
      // 避免重复创建
      if (!$error.length) {
        $error = $('<div class="error"></div>').appendTo($li);
      }
      $error.text('上传失败');
    });
    // 完成上传完了，成功或者失败，先删除进度条。
    uploader.on('uploadComplete', function (file) {
      $('#' + file.id).find('.progress').remove();
    });
  })()
</script>